Инструкция по созданию серверного приложения на nodejs + express

До того, как начать

Предполагается, что Вы уже знакомы с JavaScript. Если нет, то необходимо что-то сделать с этим. Например почитать онлайн учебник: https://learn.javascript.ru/

Node.js что это?

Node.js — это кроссплатформенная среда исполнения JavaScript с открытым исходным кодом, основанная на движке V8 компании Google и предназначенная для создания web-приложений на стороне сервера.

Установка

Для загрузки нужно перейти на официальный сайт https://nodejs.org/en/. На главной странице мы сразу увидим две возможные опции для загрузки: самая последняя версия NodeJS и LTS-версия.

Cкачиваем, устанавливаем. Там же можно найти инструкцию по утановке:

centos:

1
2
3
curl —silent —location https://rpm.nodesource.com/setup_9.x | sudo bash - 
sudo yum -y install nodejs
sudo yum install gcc-c++ make

ubuntu:

1
2
3
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - 
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Проверить правильность установки можно командой:

1
node --version

Команда покажет текущую версию программы.

REPL

После установки NodeJS нам становится доступным такой инструмент как REPL.
REPL (Read Event Printed Loop) представляет возможность запуска выражений на языке JavaScript в командной строке или терминале.

Так, запустим командную строку (на Windows) или терминал (на OS X или Linux) и введем команду node. После ввода этой команды мы можем выполнять различные выражения на JavaScript.

Пакеты в Node.js

Вкратце, пакетом в Node.js называется один или несколько JavaScript-файлов, представляющих собой какую-то библиотеку или инструмент.

npm (аббр. node package manager) — это стандартный менеджер пакетов, автоматически устанавливающийся вместе с Node.js. Он используется для скачивания пакетов из облачного сервера npm, либо для загрузки пакетов на эти сервера.

Перед стартом проекта

Создайте директорию проекта, где будет храниться весь код. Затем откройте терминал, выполните команду для инициализации:

1
npm init

После ответа на вопросы в директории проекта появится файл ‘package.json’

Express

Express - это минималистичный и гибкий веб-фреймворк для приложений Node.js, построенный на базе фреймворка connect.

Основное предназначение Express - маршрутизация и промежуточная обработка с минимальной собственной функциональностью: приложение Express, по сути, представляет собой серию вызовов функций промежуточной обработки (middleware).

Для утановки Express в терминале из директории проекта запустите команду:

1
npm install express

Как это применить

Создаем файл server.js.

Для использования фреймворка Express, необходимо подключить модуль express, и создать приложение.

1
2
var express = require('express'); 
var app = express();

Запустить приложение можно командой:

1
2
3
app.listen(8080, function(){
console.log('server start on port 8080');
})

В результате сервер запустится, но если в браузере выполнить запрос к приложению localhost:8080, то получим ошибку:

Cannot GET /

Это происходит потому, что в программе нет ни одного маршрута.

Маршрутизация

Маршрутизация определяет, как приложение отвечает на клиентский запрос к конкретному адресу, и определенному методу HTTP запроса.

Каждый маршрут может иметь несколько обработчиков, которые выполняются при сопоставлении маршрута.

Для определения маршрута используют следующую структуру:

1
app.METHOD(path, handler)

app – экземпляр express приложения
METHOD – метод HTTP запроса
path – путь на сервере
handler – функция обработчик на указанный путь

Продолжаем применять

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var express = require('express');
var app = express();

// Вызываем метод get, он установит обработчик, который будет срабатывать на get запросы, для маршрута '/'
app.get('/', function(request, response){
console.log(request.url);
response.send('<h1>Hello, world!</h1>');
});

// То же самое для маршрута '/about'
app.get('/about', function(request, response){
console.log(request.url);
response.send('<h1>About Page</h1>');
});
app.listen(8080);

Что еще?

Middleware-function

Функции промежуточной обработки (middleware) - это функции, имеющие доступ к объекту запроса req, объекту ответа res и к следующей функции промежуточной обработки в цикле “запрос-ответ” приложения next.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var express = require('express');
var app = express();

// для регистрации middleware используется функция use, all, app.METHOD()
// 1. request - данные запроса
// 2. response - объект для управления ответом
// 3. next - следующая в конвейере обработки функция

app.use('/', function(request, response, next){
console.log('Prehandler...');
// передаем управление следующему обработчику
next();
});

app.get('/', function(request, response){
console.log('Main handler');
// завершаем ответ от сервера
response.end();
});

app.listen(8080);

Таким образом, выполнятся обе функции при обращении по корневому маршруту.

Routing

Используя класс express.Router можно создавать модульные, монтируемые обработчики маршрутов. Экземпляр этого класса представляет комплексную систему промежуточных обработчиков и маршрутизации.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var express = require('express');
var app = express();

var router = express.Router();

router.route("/")
.get(function(req, res){
res.send("List of products. Get method.");
})
.post(function(req, res){
res.send("Product created. POST method.");
});
router.route("/:id")
.get(function(req, res){

res.send(`Product ${req.params.id}`);
});

app.use("/products", router);

app.get("/", function(req, res){
res.send("Главная страница");
});

app.listen(8080);

При выполении запроса localhost:8080/products маршрут будет определяться из router. Выполнится соответствующая функция-обработчик.

Финиш

В инструкции вы познакомились с node.js+express. Этого будет достаточно для быстрого старта.
Для получения большей информации листайте источники.

Источники:

node:
https://nodejs.org/en/
https://itvdn.com/ru/video/node_js/express - платный ресурс к сожалению, но полезный.
https://learn.javascript.ru/screencast/nodejs - альтернатива

npm:
https://www.npmjs.com/

express:
http://expressjs.com/ru/
https://nodeguide.ru/doc/modules-you-should-know/express/
http://expressjs.com/ru/4x/api.html - api справочник express